package me.skean.synologyphotosutil;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration // 标明是配置类
public class AppConfig {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)  // DocumentationType.SWAGGER_2 固定的，代表swagger2
//                .groupName("分布式任务系统") // 如果配置多个文档的时候，那么需要配置groupName来分组标识
                                                        .apiInfo(new ApiInfoBuilder().title("SynologyPhotosUtil") //  可以用来自定义API的主标题
                                                                                     .description("管理群晖系统文件或图片的工具") // 可以用来描述整体的API
                                                                                     .version("1.0.0") // 可以用来定义版本。
                                                                                     .build()) // 用于生成API信息
                                                        .select() // select()函数返回一个ApiSelectorBuilder实例,用来控制接口被swagger做成文档
                                                        .apis(RequestHandlerSelectors.basePackage("me.skean.synologyphotosutil.controller")) // 用于指定扫描哪个包下的接口
                                                        .paths(PathSelectors.any())// 选择所有的API,如果你想只为部分API生成文档，可以配置这里
                                                        .build();
    }

    @Bean
    public WebMvcConfigurer customMvcConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                // 设置根路径重定向到/doc.html
                registry.addRedirectViewController("/", "/doc.html");
            }
        };
    }
}
